# Makefile.in for Cygwin's testsuite.
#
# This file is part of Cygwin.
#
# This software is a copyrighted work licensed under the terms of the
# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
# details.

# This makefile requires GNU make.

SHELL:=@SHELL@
srcdir:=@srcdir@
objdir:=.
libltp_srcdir=$(srcdir)/libltp
target_builddir:=@target_builddir@

target_alias:=@target_alias@
build_alias:=@build_alias@
host_alias:=@host_alias@

DESTDIR=
prefix:=${DESTDIR}@prefix@

program_transform_name:=@program_transform_name@
exec_prefix:=${DESTDIR}@exec_prefix@
bindir:=${DESTDIR}@bindir@
libdir:=${DESTDIR}@libdir@
ifeq ($(target_alias),$(host_alias))
ifeq ($(build_alias),$(host_alias))
tooldir:=$(exec_prefix)
else
tooldir:=$(exec_prefix)/$(target_alias)
endif
else
tooldir:=$(exec_prefix)/$(target_alias)
endif
datarootdir:=@datarootdir@
datadir:=${DESTDIR}@datadir@
infodir:=${DESTDIR}@infodir@
includedir:=${DESTDIR}@includedir@

TESTSUP_INCLUDES:=-I$(libltp_srcdir)/include

#
# --enable options from configure
#

CC:=@CC@
ifneq (,$(CFLAGS))
  override CFLAGS+= -MD $(TESTSUP_INCLUDES)
else
  CFLAGS:=@CFLAGS@ -MD $(TESTSUP_INCLUDES)
endif

AR:=@AR@
AR_FLAGS:=qv
MINGW_CC:= @MINGW_CC@
MINGW_CXX:= @MINGW_CXX@

#
# Include common definitions for winsup directory
#
include $(srcdir)/../Makefile.common

VPATH+=$(libltp_srcdir)/lib

RUNTESTFLAGS =

ifdef VERBOSE
    RUNTESTFLAGS = -v
endif

RUNTIME=$(cygwin_build)/cygwin0.dll $(cygwin_build)/libcygwin0.a

TESTSUP_LIB_NAME:=libltp.a
TESTSUP_OFILES:=${sort ${addsuffix .o,${basename ${notdir ${wildcard $(libltp_srcdir)/lib/*.c}}}}}

override COMPILE_CC:=${filter-out -O%,$(COMPILE_CC)}
override CFLAGS:=${filter-out -O%,$(CFLAGS)}

.PHONY: all install

.SUFFIXES:
.SUFFIXES: .c .cc .def .a .o .d

all: $(TESTSUP_LIB_NAME)

install:

clean:
	-rm -f *.o *.dll *.a *.exp junk *.bak *.base *.exe *.d *.dat
	-rm -rf testsuite

maintainer-clean realclean: clean
	@echo "This command is intended for maintainers to use;"
	@echo "it deletes files that may require special tools to rebuild."
	-rm -fr configure

# Rule to build libltp.a

$(TESTSUP_LIB_NAME): $(TESTSUP_OFILES)
	$(AR) rcv temp.a $(TESTSUP_OFILES)
	mv temp.a $(TESTSUP_LIB_NAME)

$(RUNTIME) : $(cygwin_build)/Makefile
	@$(MAKE) --no-print-dir -C $(@D) $(@F)

#

# These targets are for the dejagnu testsuites. The file site.exp
# contains global variables that all the testsuites will use.

# Set to $(target_alias)/ for cross.
target_subdir = @target_subdir@

# a temporary directory, to be used for files created by tests
tmpdir = $(abspath $(objdir)/testsuite/tmp/)
# the same temporary directory, as an absolute, /cygdrive path (so it can be
# understood by the test DLL, which will have a different mount table)
testdll_tmpdir = $(shell cygpath -ma $(tmpdir) | sed -e 's#^\([A-Z]\):#/cygdrive/\L\1#')

site.exp: ../config.status Makefile
	@echo "Making a new config file..."
	-@rm -f ./tmp?
	@touch site.exp
	-@mv site.exp site.bak
	@echo "## these variables are automatically generated by make ##" > ./tmp0
	@echo "# Do not edit here. If you wish to override these values" >> ./tmp0
	@echo "# add them to the last section" >> ./tmp0
	@echo "set rootme \"`pwd`\"" >> ./tmp0
	@echo "set runtime_root \"\$$rootme/../cygwin\"" >> ./tmp0
	@echo "set srcdir \"`cd ${srcdir}; pwd`\"" >> ./tmp0
	@echo "set host_triplet $(host_canonical)" >> ./tmp0
	@echo "set build_triplet $(build_canonical)" >> ./tmp0
	@echo "set target_triplet $(target)" >> ./tmp0
	@echo "set target_alias $(target_alias)" >> ./tmp0
	@echo "set CC \"$(CC)\"" >> ./tmp0
# CFLAGS is set even though it's empty to show we reserve the right to set it.
	@echo "set CFLAGS \"\"" >> ./tmp0
	@echo "set MINGW_CXX \"$(MINGW_CXX)\"" >> ./tmp0
	@echo "set tmpdir $(tmpdir)" >> ./tmp0
	@echo "set testdll_tmpdir $(testdll_tmpdir)" >> ./tmp0
	@echo "set ltp_includes \"$(realpath $(libltp_srcdir))/include\"" >> ./tmp0
	@echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0
	@cat ./tmp0 > site.exp
	@cat site.bak | sed \
		-e '1,/^## All variables above are.*##/ d' >> site.exp
	-@rm -f ./tmp?

testsuite/site.exp: site.exp
	if [ -d testsuite ]; then \
	  true; \
	else \
	  mkdir testsuite; \
	fi
	rm -rf testsuite/site.exp
	cp site.exp testsuite/site.exp

# Note: we set the PATH so that we can pick up cygwin0.dll

check: $(TESTSUP_LIB_NAME) $(RUNTIME) cygrun.exe testsuite/site.exp
	rootme=`pwd` ;\
	PATH=$$rootme/../cygwin:$${PATH} ;\
	cd testsuite; runtest --tool winsup $(RUNTESTFLAGS)

ifdef MINGW_CC
cygrun.o: cygrun.c
	$(MINGW_CC) $(MINGW_CFLAGS) -o $@ -c $<

cygrun.exe : cygrun.o
	$(MINGW_CC) $(MINGW_LDFLAGS) -o $@ $<
endif
